package la.iok.hzsvn.lewin.movie.operation.service;

import la.iok.hzsvn.lewin.movie.core.Token;
import la.iok.hzsvn.lewin.movie.operation.model.ConsumeDetail;

import java.util.List;

/**
 * 消费明细报表
 */
public interface ConsumeDetailService {
    /**
     * 查询消费明细报表
     * @param token 操作用户
     * @param orgUnitId 指定过滤的店铺id
     * @param roomId 指定过滤的房间id
     * @param start 指定查询的开始日期,yyyy-MM-dd格式
     * @param end 指定查询的结束日期,yyyy-MM-dd格式
     * @return 消费明细
     */
    List<ConsumeDetail> list(Token token, Long orgUnitId, Long roomId, String start, String end);

    /**
     * 导出时的数据。从数据库中取数据,然后把消费的数据修改为负数,充值的数据保持正数
     * @param token 操作用户
     * @param orgUnitId 指定过滤的店铺id
     * @param roomId 指定过滤的房间id
     * @param start 指定查询的开始日期,yyyy-MM-dd格式
     * @param end 指定查询的结束日期,yyyy-MM-dd格式
     * @return 消费明细
     */
    List<ConsumeDetail> exportData(Token token, Long orgUnitId, Long roomId, String start, String end);

    /**
     * 预览消费明细数据，只用于做旧数据处理
     * @param token 操作用户,必须是Admin
     * @param orgUnitId 店铺id,用于指定只处理这个店铺的数据
     * @param roomId 房间id,用于指定只处理这个房间的数据
     * @return 消费明细预览数据
     */
    List<ConsumeDetail> preview(Token token, Long orgUnitId, Long roomId);

    /**
     * 预览之后确认对数据的修改
     * @param token 操作用户,必须是Admin
     * @param orgUnitId 店铺id,用于指定只处理这个店铺的数据
     * @param roomId 房间id,用于指定只处理这个房间的数据
     * @return 消费明细预览数据
     */
    List<ConsumeDetail> confirmUpdate(Token token, Long orgUnitId, Long roomId);
}
